
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.cont.view.mbean;

import com.brain.cont.dto.CierreContaDto;
import com.brain.cont.manager.CierreContableManager;
import com.brain.cont.view.util.ConstantesCont;
import com.brain.core.dto.ParametroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.BitacoraManager;
import com.brain.core.view.mbean.*;
import com.brain.core.manager.RecursosManager;
import com.brain.core.view.util.ConstantesCore;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author J. Verde
 */
@Controller("cierreContableMBean")
@Scope("session")
public class CierreContableMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(CierreContableMBean.class);
    @Resource
    private RecursosManager recursosManager;
    @Resource
    private CierreContableManager manager;
    @Resource
    private BitacoraManager managerBitacora;
    @Resource
    
    
    private List<CierreContaDto> lista;
    private CierreContaDto dto;
    private CierreContaDto dtoFiltro;
    private String keyTitulo = "key.cierre.titulo";        
    private SelectItem[] siTipos;    
    private SelectItem[] siEstados;
    
    private SelectItem[] siTiposFiltro;    
    private SelectItem[] siEstadosFiltro;
    
    private List<ParametroDto> siAnos;
    private List<ParametroDto> siMeses;
    private List<ParametroDto> siAnosFiltro;
    private List<ParametroDto> siMesesFiltro;
    
    
    
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;

    public CierreContableMBean() {
        this.dtoFiltro = null;
        this.dto = null;
    }
    
    public String iniciar() {
        this.dtoFiltro = new CierreContaDto();    
        this.dtoFiltro.setAnoDto(recursosManager.obtenerParametroPorId(ConstantesCore.Parametro.TODOS));
        this.dtoFiltro.setMesDto(recursosManager.obtenerParametroPorId(ConstantesCore.Parametro.TODOS));
        this.dtoFiltro.setTipo(ConstantesCont.ValoresConstantes.TODOS.getTitulo());
        this.dtoFiltro.setEstado(ConstantesCont.ValoresConstantes.TODOS.getTitulo());
        this.lista = new ArrayList<CierreContaDto>();
        return manager.getUrlLista();
    }

    public String nuevo() {
        sessionMBean.setAccion(ConstantesCont.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.dto = manager.inicializar();    
        return manager.getUrlPrincipal();
    }

    public String editar() {
        sessionMBean.setAccion(ConstantesCont.Formulario.EDITAR);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        return manager.getUrlPrincipal();
    }
    
    public String ver() {
        sessionMBean.setAccion(ConstantesCont.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        return manager.getUrlPrincipal();
    }

    public void guardar() {
        try {
            if (manager.guardar(dto) != null) {
                this.dto = this.manager.obtenerPorId(this.dto.getId());
                sessionMBean.setAccion(ConstantesCont.Formulario.EDITAR);
            }
        } catch (DAOException ex) {
            recursosManager.showError(ex.getMessage());
        }
    }

    public String verBitacora() {
        managerBitacora.cargarBitacoraEntidad(manager.getIdEntidad(), this.dto.getId());
        return null;
    }
    
    public void buscar() {
        try {
            lista = manager.buscar(dtoFiltro);
        } catch (DAOException ex) {
            logger.error(ex);
        }
    }

    public String retroceder() {
        sessionMBean.setAccion(ConstantesCont.Formulario.LISTA);
        sessionMBean().setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean().getAccion()));
        return manager.getUrlLista();
    }
    
    
    /*GETTERS AND SETTERS*/

    public List<CierreContaDto> getLista() {
        return lista;
    }

    public void setLista(List<CierreContaDto> lista) {
        this.lista = lista;
    }

    public CierreContaDto getDto() {
        return dto;
    }

    public void setDto(CierreContaDto dto) {
        this.dto = dto;
    }

    public CierreContaDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(CierreContaDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public String getKeyTitulo() {
        return keyTitulo;
    }

    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }

    public SelectItem[] getSiTipos() {
        return manager.siTipos(Boolean.FALSE);
    }

    public void setSiTipos(SelectItem[] siTipos) {
        this.siTipos = siTipos;
    }

    public SelectItem[] getSiEstados() {
        return manager.siEstados(Boolean.FALSE);
    }

    public void setSiEstados(SelectItem[] siEstados) {
        this.siEstados = siEstados;
    }

    public SelectItem[] getSiTiposFiltro() {
        return manager.siTipos(Boolean.TRUE);
    }

    public void setSiTiposFiltro(SelectItem[] siTiposFiltro) {
        this.siTiposFiltro = siTiposFiltro;
    }

    public SelectItem[] getSiEstadosFiltro() {
        return manager.siEstados(Boolean.TRUE);
    }

    public void setSiEstadosFiltro(SelectItem[] siEstadosFiltro) {
        this.siEstadosFiltro = siEstadosFiltro;
    }

    public List<ParametroDto> getSiAnos() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_ANIOS_TRABAJO);
    }

    public void setSiAnos(List<ParametroDto> siAnos) {
        this.siAnos = siAnos;
    }

    public List<ParametroDto> getSiMeses() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesCont.CatalogoParametro.CONTA_MESES_TRABAJO);
    }

    public void setSiMeses(List<ParametroDto> siMeses) {
        this.siMeses = siMeses;
    }

    public List<ParametroDto> getSiAnosFiltro() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_ANIOS_TRABAJO, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiAnosFiltro(List<ParametroDto> siAnosFiltro) {
        this.siAnosFiltro = siAnosFiltro;
    }

    public List<ParametroDto> getSiMesesFiltro() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistemaAdd(ConstantesCont.CatalogoParametro.CONTA_MESES_TRABAJO, com.brain.core.view.util.ConstantesCore.Parametro.TODOS);
    }

    public void setSiMesesFiltro(List<ParametroDto> siMesesFiltro) {
        this.siMesesFiltro = siMesesFiltro;
    }
    
    
}
